home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 20 / 5 / DISK2058.ZIP / UNFAST.EXE / FUNCTION.HLP < prev    next >
Text File  |  1980-01-01  |  12KB  |  356 lines

  1.  FUNCTIONS
  2.  =========
  3.  
  4. Functions are used in numeric expressions, they perform some task which returns
  5. a value.
  6.  
  7. Notes:      +   represents a function which is considered advanced.
  8.             $$$ represents a function which is not working yet - work needed.
  9. ABS         ABS n
  10.  
  11. Returns the absolute (positive) value of n.
  12.  
  13. ABS assumes n is a two's complement number, therefore the 15th bit is the sign
  14. bit (n is always a word value, ie 16 bits).
  15.  
  16. Examples.
  17.  
  18. PRINT ABS 2         ;Prints 2.
  19. PRINT ABS -2        ;Prints 2.
  20. PRINT ABS 65534     ;Prints 2.
  21. ALLOCATE    ALLOCATE n
  22.  
  23. Returns the segment for a block of memory n paragraphs long, includes ERROR
  24. checking.
  25.  
  26. A paragraph of memory is equal to 16 bytes.
  27. If there aren't enough paragraphs of memory left then an ERROR 8 occurs (+ the
  28. BX register will contain the maximum number of paragraphs available).
  29.  
  30. If the memory has been corrupted (normally by a program going over a segment
  31. boundary) then ERROR 7 occurs.
  32.  
  33. A segment of allocated memory can be used to load overlays, create tables,
  34. store data & anything else, including large arrays.
  35.  
  36. Example.
  37.  
  38. file_seg=ALLOCATE 4000  ;#ERRORS ON (assumed, no need for extra error check).
  39. load "file",file_seg|0
  40. CARRY       + CARRY
  41.  
  42. Returns 1 if the computers carry flag is set else returns 0.
  43. CDISK         CDISK
  44.  
  45. Returns the value of the default disk. 0=A:, 1=B: etc...
  46. COMPARE     COMPARE[B] length AT address WITH address
  47.  
  48. Returns the address of the first mismatch in words/bytes of two addresses, if
  49. they are both the same then 0 is returned.
  50. The address returned will be starting from the first address specified.
  51.  
  52. Note ! If the first address=0 then 0 will be returned if either there is
  53.        no mismatch of the first words/bytes mismatch.
  54.  
  55. Example.
  56.  
  57. diff=COMPARE 2000 FROM video|2 WITH old_video|2
  58. IF diff THEN update_new_screen  ;If differences found then update screen.
  59. CURPOS      CURPOS
  60.  
  61. Returns the current cursor position as a word value.
  62. The X (column) value is stored in the low 8 bits and y (row) in the upper 8
  63. bits, therefore: value=CURPOS ;value=y*256+x.
  64. DIGITS      DIGITS n
  65.  
  66. Returns the number of digits in the printed form of the number n.
  67.  
  68. Examples.
  69.  
  70. PRINT DIGITS 1      ;Prints 1
  71. PRINT DIGITS 295    ;Prints 3
  72. PRINT DIGITS 40000  ;Prints 5
  73. DTA OFFSET  DTA OFFSET
  74.  
  75. Returns the current disk transfer address offset value.
  76. This is where FIND FIRST and FIND NEXT commands store information about files.
  77. DTA SEGMENT DTA SEGMENT
  78.  
  79. Returns the current disk transfer address segment value.
  80. This is where FIND FIRST and FIND NEXT commands store information about files.
  81. GETINT    + GETINT b
  82.  
  83. Returns the segment and offset of the interupt vector b.
  84. If GETINT is used as a word function then only the offset is returned, to
  85. find out the segment and offset of an interupt vector then use a 32 bit
  86. variable.
  87.  
  88. Note ! b is a hexadecimal number as with all interupt vectors in FAST.
  89.      ! GETINT can only be used in 32 bit expressions.
  90.  
  91. Examples.
  92.  
  93. v32 = GETINT 21     ;v32=segment of vector 21h * 65536 + offset of vector 21h.
  94.  
  95. int9  = GETINT 9
  96. int9o = LOW int9    ;int9o=offset for interupt 9.
  97. int9s = HIGH int9   ;int9s=segment for interupt 9.
  98. HANDLE    + HANDLE #n
  99.  
  100. Returns the file handle number stored in any of the twelve file handles that
  101. FAST can use.
  102.  
  103. See the HANDLE command for information on file handles.
  104. HIGH         HIGH n
  105.  
  106. Returns the high part of n.
  107. If n is a 16 bit value then the high 8 bits are returned as a byte value.
  108. If n is a 32 bit value then the high 16 bits are returned as a word value.
  109.  
  110. Example.
  111.  
  112. PRINT HIGH 16384    ;Prints 64.
  113. HIT         HIT x,y,
  114. IN       + IN n
  115.  
  116. Returns byte value from port n.
  117. This is the same as using the assembler IN function.
  118. INPUT         INPUT[H][B]
  119.  
  120. Waits for input from the keyboard (same as with INPUTS command) then returns
  121. the value of the input number.
  122.  
  123. Pressing ESC or entering nothing returns 0.
  124. KEY         KEY
  125.  
  126. Returns the key code of the current key pushed and removes it from the buffer.
  127. KEYPRESSED  KEYPRESSED
  128.  
  129. Returns 0 if no keys are waiting in the key buffer otherwise returns 1.
  130. The key buffer is not effected.
  131. KEYSCAN     KEYSCAN
  132.  
  133. Returns the key code in the low 8 bits of a 16 bit value, the scan code is in
  134. the high 8 bits.
  135. The key is removed from the key buffer.
  136.  
  137. Example.
  138.  
  139. ks=KEYSCAN      ;ks=combined KEYSCAN values.
  140. kk=LOW KEYSCAN  ;kk=the key code.
  141. ss=HIGH KEYSCAN ;ss=the scan code.
  142. LCASE         LCASE b
  143.  
  144. Returns the lower case value of an ascii character, if b does not represent an
  145. upper case letter then b is returned unchanged.
  146.  
  147. Example.
  148.  
  149. PRINT LCASE 'M'     ;Prints 'm'.
  150. PRINT LCASE ' '     ;Prints ' '.
  151. PRINT LCASE 'c'     ;Prints 'c'.
  152. LOW         LOW n
  153.  
  154. Returns the low part of n.
  155. If n is a 16 bit value then the low 8 bits of n are returned as a byte value.
  156. If n is a 32 bit value then the low 16 bits of n are returned as a word value.
  157. MENU         MENU n,b
  158.  
  159. Returns the value of the option selected from a menu window, if ESC is pushed
  160. then 0 is returned, otherwise values start at 0.
  161. b is the option that the highlight bar starts on.
  162.  
  163. See the OPEN WINDOW command for a description of how to define a window.
  164.  
  165. Example.
  166.  
  167. opt=MENU main_menu,1
  168. IF opt=0 THEN RETURN
  169. NOT         NOT n
  170.  
  171. Returns 0 if n is true (not 0) and 1 if n is false (0).
  172. PAGE         PAGE
  173.  
  174. Returns the current display page.
  175. First page = 0.
  176.  
  177. Note ! If using a graphics mode then 0 is returned.
  178. PEEK         PEEK[B] address
  179.  
  180. Returns the word/byte value which is at the address.
  181. Word values have the low 8 bits at address and the high 9 bits at address+1,
  182. this is the standard INTEL memory storage.
  183.  
  184. Note ! If PEEK is used in a 32 bit expression then a 32 bit value is returned,
  185.        The low 16 bits are stored at address, the high 16 bits at address+2.
  186. POINT         POINT x,y
  187.  
  188. Returns the colour value of the pixel at coordinate x,y.
  189. See the PLOT command for setting dots.
  190. PRINTM      PRINTM address,b [,0]
  191.  
  192. Returns the address for the start of the next line after printing the
  193. characters on the screen stored at address.
  194.  
  195. This function is ULTRA FAST for printing lines of text or file names etc
  196. on the screen at the current PRINT (LOCPOS) position using the current colour.
  197. The colour can be left unchanged on the screen by appending the option ,0 to
  198. the PRINTM function.
  199.  
  200. b is the width of the column of text to be printed, PRINTM handles tabs and
  201. also fills the rest of the line with spaces if necessary.
  202. The end character is either 0, 13 or 26 (NULL, CR or EOF).
  203.  
  204. Example to print an entire screen of text.
  205.  
  206. If a carriage return is encountered and the next character is a line feed then
  207. it is automatically skipped, returning the offset for the byte after to LF.
  208. If an end of file marker is found then the offset returned will remain at the
  209. address of the EOF character, hence it never goes over the edge.
  210.  
  211. FOR y=0 TO 24
  212. LOCATE y,0
  213. mem=PRINTM edit_seg|mem,80
  214. NEXT y
  215. PSP       + PSP
  216.  
  217. Returns the current PSP (Program Segment Prefix).
  218. The default PSP for any running FAST program is the same as the code segment.
  219.  
  220. The PSP command and function should be used within TSR (Terminate and Stay
  221. Resident programs).
  222. READ         READ #n,length TO address
  223.  
  224. Returns the number of bytes read.
  225. Reads length number of bytes from the open file n and puts them at the address.
  226. Includes ERROR checking.
  227.  
  228. Example.
  229.  
  230. rn=READ #1,10 TO work_area
  231. IF ERROR THEN ERROR         ;Not needed if #ERRORS ON.
  232. IF rn<>10 THEN ERROR 13     ;Invalid data becuase 10 bytes weren't read.
  233. REG       + REG register
  234.  
  235. Returns value of computers register.
  236. Register can be any of AX BX CX DX DI SI BP SP ES DS CS.
  237. RLEFT       + RLEFT[Z] n
  238.  
  239. Returns the value of n after it has been rotated left.
  240. Rotates the expression n left, all 16 bits.
  241. The optional Z means zero fill the right bit.
  242.  
  243. Eg: RLEFTZ  ──── 0000000100010111b ──── 0
  244. RND         RND
  245.  
  246. Returns a random number. The sequences starting point is set by the RANDOMIZE
  247. command.
  248. RRIGHT    + RRIGHT[Z] n
  249.  
  250. Returns the value of n after it has been rotated right.
  251. Rotates the expression n right, all 16 bits.
  252. The optional Z means zero fill the left bit.
  253.  
  254. Eg: RRIGHT  ┌─ 0000000100010111b ─┐
  255.             └────────────────────┘
  256. SCAN         SCAN
  257.  
  258. Returns the scan code of the current key pushed and removes it from the buffer.
  259. SCRCHR      SCRCHR y,x
  260.  
  261. Returns the character which is on the screen at row y, column x.
  262. SCREEN      SCREEN
  263.  
  264. Returns the current screen mode, see the SCREEN command for the values which
  265. represent each different video mode.
  266. SEARCH      SEARCH[B] length FROM address FOR n
  267.  
  268. Returns the address of the first word/byte which equals n, if n is not found
  269. then 0 is returned.
  270.  
  271. Note ! If the first address=0 then 0 will be returned if either the first
  272.        word matches or if n is not found.
  273.  
  274. Example.
  275.  
  276. fnd=SEARCHB table_len FROM table FOR key
  277. IF fnd THEN process_tab(fnd)  ;If found then process.
  278. SELECT      SELECT n,b
  279.  
  280. Returns the line from the menu selected (0=escape).
  281. Puts the highlight bar on the menu (WINDOW details at address n).
  282. The window must already be open, using either MENU or OPEN.
  283. The window is not closed after select.
  284. b is the line (from 1) where the highlight bar starts.
  285. SERIAL      SERIAL_STATUS
  286.  
  287. Serial communications.
  288. Returns the status of the serial port (1) for the line and modem.
  289.  
  290. line_status  = high serial_status
  291. modem_status = low  serial_status
  292.  
  293.  AH (Line status)
  294.  ----------------
  295.         7 6 5 4 3 2 1 0
  296.         1 . . . . . . .       Time-out error
  297.         . 1 . . . . . .       Transfer shift register empty
  298.         . . 1 . . . . .       Transfer holding register empty
  299.         . . . 1 . . . .       Break-detect error
  300.         . . . . 1 . . .       Framing error
  301.         . . . . . 1 . .       Parity error
  302.         . . . . . . 1 .       Overrun error
  303.         . . . . . . . 1       Data ready
  304.  
  305.  AL (Modem status)
  306.  -----------------
  307.         7 6 5 4 3 2 1 0
  308.         1 . . . . . . .       Received line signal detect
  309.         . 1 . . . . . .       Ring indicator
  310.         . . 1 . . . . .       Data set ready
  311.         . . . 1 . . . .       Clear to send
  312.         . . . . 1 . . .       Change in receive line signal detected
  313.         . . . . . 1 . .       Trailing edge ring detector
  314.         . . . . . . 1 .       Change in data set ready
  315.         . . . . . . . 1       Change in clear to send
  316. SERIAL_SEND SERIAL_SEND n
  317.  
  318. Serial Communications.
  319. Sends a byte to the serial port, COM1. SERIAL_SEND uses the BIOS int 14h
  320. services to send characters.
  321.  
  322. To receive characters, use ENABLE SERIAL.
  323.  
  324. Example: See ENABLE SERIAL for a excerpt coms program using FAST.
  325.          The PHONE.F program is a complete terminal emulator with file
  326.          transfers. Only available to registered users.
  327. STACK       + STACK
  328.  
  329. Returns the current value of the stack pointer, the SP register.
  330. TIMER         TIMER
  331.  
  332. Returns the value of the current time, in 18.2 second units.
  333.  
  334. The TIMER value can range from 0 to 86399 so the timer function should be used
  335. with a 32 bit variable.
  336.  
  337. Example.
  338.  
  339. PRINT TIMER     ;If TIMER was 80000 then would print 14464 (low 16 bits).
  340. V32=TIMER       ;V32 (assumed a 32 bit variable) would equal 80000.
  341. UCASE         UCASE b
  342.  
  343. Returns the upper case value of an ascii character, if b does not represent a
  344. lower case letter then b is returned unchanged.
  345.  
  346. Example.
  347.  
  348. PRINT UCASE 'M'     ;Prints 'M'.
  349. PRINT UCASE ' '     ;Prints ' '.
  350. PRINT UCASE 'c'     ;Prints 'C'.
  351. USR       + USR address
  352.  
  353. Returns the value returned by a subroutine in the AX register.
  354.  
  355. Note ! USR is the same as the CALL command but it returns a value.
  356.